// 设置组件中任何位置按钮的鉴权操作----按钮的显示或者隐藏
// 引入vue中的App类型
import type { App} from 'vue'
// 引入用户的pinia仓库对象
import { useUserInfoStore } from '@/stores/userInfo'

// 自定义指令has，在标签中的写法是v-has
export default (app:App) => { 
  app.directive('has', {
    // 加载完毕后的生命周期
    mounted(el, binding) { 
      console.log(el,binding)
      // el----使用该指令的组件标签
      // binding.value 是使用该指令的时候传入的 字符串标识数据
      const userInfoStore = useUserInfoStore()
      // 判断当前的这个用户信息中的按钮标识数组中有没有传入进来的字符串标识数据
      if (!userInfoStore.authBtnList.includes(binding.value)) { 
        // 该逻辑是删除某用户的某个按钮权限功能，当想要再给其分配该权限，就得在角色管理中为该用户添加相应的按钮权限
        el.parentNode.removeChild(el)
      }
    }
  })
}
// 组件
// <xxx v-has="'btn.Attr.add'" />